From f816a8fb820bf74a5378dd1e01322949940744f1 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Timm=20B=C3=A4der?= Date: Sat, 12 Dec 2020 14:45:11 +0100 Subject: [PATCH] gl renderer: Unify viewport setting in add_offscreen_ops() We use the same rect here a few times. --- gsk/gl/gskglrenderer.c | 21 +++++++-------------- gsk/gskroundedrectprivate.h | 10 ++++++++++ 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/gsk/gl/gskglrenderer.c b/gsk/gl/gskglrenderer.c index 1731b7ca46..0b7a45800c 100644 --- a/gsk/gl/gskglrenderer.c +++ b/gsk/gl/gskglrenderer.c @@ -3839,6 +3839,7 @@ add_offscreen_ops (GskGLRenderer *self, int filter; GskTextureKey key; int cached_id; + graphene_rect_t viewport; if (node_is_invisible (child_node)) { @@ -3924,27 +3925,19 @@ add_offscreen_ops (GskGLRenderer *self, render_target); } - init_projection_matrix (&item_proj, - &GRAPHENE_RECT_INIT ( - bounds->origin.x * scale_x, - bounds->origin.y * scale_y, - width, height - )); + viewport = GRAPHENE_RECT_INIT (bounds->origin.x * scale_x, + bounds->origin.y * scale_y, + width, height); + init_projection_matrix (&item_proj, &viewport); prev_render_target = ops_set_render_target (builder, render_target); /* Clear since we use this rendertarget for the first time */ ops_begin (builder, OP_CLEAR); prev_projection = ops_set_projection (builder, &item_proj); ops_set_modelview (builder, gsk_transform_scale (NULL, scale_x, scale_y)); - prev_viewport = ops_set_viewport (builder, - &GRAPHENE_RECT_INIT (bounds->origin.x * scale_x, - bounds->origin.y * scale_y, - width, height)); + prev_viewport = ops_set_viewport (builder, &viewport); if (flags & RESET_CLIP) - ops_push_clip (builder, - &GSK_ROUNDED_RECT_INIT (bounds->origin.x * scale_x, - bounds->origin.y * scale_y, - width, height)); + ops_push_clip (builder, &GSK_ROUNDED_RECT_INIT_FROM_RECT (viewport)); builder->dx = 0; builder->dy = 0; diff --git a/gsk/gskroundedrectprivate.h b/gsk/gskroundedrectprivate.h index 5c2912b492..bddd4ea18c 100644 --- a/gsk/gskroundedrectprivate.h +++ b/gsk/gskroundedrectprivate.h @@ -7,6 +7,16 @@ G_BEGIN_DECLS +#define GSK_ROUNDED_RECT_INIT_FROM_RECT(_r) \ + (GskRoundedRect) { .bounds = _r, \ + .corner = { \ + GRAPHENE_SIZE_INIT(0, 0),\ + GRAPHENE_SIZE_INIT(0, 0),\ + GRAPHENE_SIZE_INIT(0, 0),\ + GRAPHENE_SIZE_INIT(0, 0),\ + }} + + gboolean gsk_rounded_rect_is_circular (const GskRoundedRect *self); void gsk_rounded_rect_path (const GskRoundedRect *self, -- 2.30.2